﻿#pragma once
#include<stdio.h>
#include<stdlib.h>

//定义链式结构的二叉树
typedef char BTDataType;
typedef struct BinaryTreeNode
{
	BTDataType data;
	struct BTDataType* left;
	struct BTDataType* right;
}BTNode;


//前序遍历--根左右
void preOrder(BTNode* root);

//中序遍历
void inOrder(BTNode* root);

//后序遍历
void postOrder(BTNode* root);

//二叉树节点个数
int BinaryTreesize(BTNode* root);
//int BinaryTreesize(BTNode* root, int* psize);

// ⼆叉树叶⼦结点个数
int BinaryTreeLeafSize(BTNode* root);

// ⼆叉树第k层结点个数
int BinaryTreeLevelKSize(BTNode* root, int k);

//⼆叉树的深度/⾼度
int BinaryTreeDepth(BTNode* root);

// ⼆叉树查找值为x的结点
BTNode* BinaryTreeFind(BTNode* root, BTDataType x);

// ⼆叉树销毁
void BinaryTreeDestory(BTNode** root);